<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>借用父构造函数继承方法</title>
</head>

<body>
  <script>
    // ------------------------错误的继承方法------------------------
    // function Father() { }
    // Father.prototype.money = function () {
    //   console.log('100万');
    // }
    // function Son() { };
    // // 子要调用父的方法 把父的原型对象赋值给子的原型对象
    // Son.prototype = Father.prototype;
    // var xm = new Son();
    // xm.money();  //100万 (继承成功)

    // // 子要有自己的方法 考试
    // Son.prototype.exam = function () {
    //   console.log('儿子要考试');
    // }
    // // 此时 查看父的原型对象 就出问题了
    // console.log(Father.prototype);  //{money: ƒ, exam: ƒ, constructor: ƒ}
    // // 父的原型对象 也有了子的方法 不合理  因此该继承方法错误



    // ------------------------正确的继承方法------------------------
    function Father() { };
    Father.prototype.money = function () {
      console.log('100万');
    }
    function Son() { };
    Son.prototype = new Father(); // 把父的实例对象赋值给子 子的实例对象可以通过__proto__.__proto__ 调用到父的方法
    Son.prototype.constructor = Son; // 把父的实例对象赋值给了子 子的指向变成父了 所以需要重新指回子
    Son.prototype.exam = function () {
      console.log('儿子要考试');
    }
    var xm = new Son();
    console.log(xm);
    xm.money(); // 子继承了父的100万
    xm.exam(); // 子的考试方法

    console.log(Father.prototype); // 父只有100万的方法 没有子考试的方法
  </script>
</body>

</html>